/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2008，所有权利保留。
 * 
 * 项目名： rumba
 * 文件名： Clock.java
 * 模块说明：    
 * 修改历史：
 * Mar 20, 2008 - linhui - 创建。
 */
package com.hd123.rumba.gwt.welcome.client;

import java.util.Date;

import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;

/**
 * 时钟 | 界面部件
 * @author linhui
 */
public class Clock extends Composite {
  /**
   * 构造函数
   * 
   * @param entryPoint
   *          指定所属模块入口点。
   */
  public Clock() {
    super();
    hour1 = new Image();
    hour2 = new Image();
    imgDot = new Image();
    minute1 = new Image();
    minute2 = new Image();
    drawSelf();
  }

  private HorizontalPanel pnl;
  private Image hour1;
  private Image hour2;
  private Image imgDot;
  private Image minute1;
  private Image minute2;
  private boolean dot;
  
  private Timer timer = new Timer() {
    public void run() {
      refresh();
    }
  };

  private void drawSelf() {
    pnl = new HorizontalPanel();
    pnl.setSpacing(0);
    pnl.setHeight("40px");
    pnl.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
    pnl.add(hour1);
    pnl.add(hour2);
    pnl.add(imgDot);
    pnl.add(minute1);
    pnl.add(minute2);
    this.refresh();

    this.initWidget(pnl);
    
    timer.scheduleRepeating(1000);
  }
  
  private final static DateTimeFormat displayFmt = DateTimeFormat.getFormat("HH:mm");
  
  private void refresh() {
    Date date = new Date();
    
    String displayStr = displayFmt.format(date);
    hour1.setUrl("images/time-" + displayStr.charAt(0) + ".gif");
    hour2.setUrl("images/time-" + displayStr.charAt(1) + ".gif");
    minute1.setUrl("images/time-" + displayStr.charAt(3) + ".gif");
    minute2.setUrl("images/time-" + displayStr.charAt(4) + ".gif");
    if(dot)
      imgDot.setUrl("images/time-dot.gif");
    else 
      imgDot.setUrl("images/time-nodot.gif");
    dot = !dot;
  }
}
